package com.sghj.construction.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sghj.construction.entity.PlanQuery;
import com.sghj.construction.entity.ConstructionSitePlan;
import com.sghj.construction.entity.vo.ConstructionSitePlanVo;

import java.util.List;

/**
 * <p>
 * 施工计划表 服务类
 * </p>
 *
 * @author fbb
 * @since 2024-07-12
 */
public interface ConstructionSitePlanService extends IService<ConstructionSitePlan> {

    /**
     * 查询施工计划
     *
     * @param sitePlan
     * @return 结果
     */
    List<ConstructionSitePlan> selectByInfo(ConstructionSitePlan sitePlan);

    /**
     * 查询施工计划(分页)
     *
     * @param sitePlan
     * @return 结果
     */
    IPage<ConstructionSitePlanVo> selectByInfo(PlanQuery sitePlan, Page<ConstructionSitePlanVo> page);

    /**
     * 查询施工计划（联系方式）
     *
     * @param monitoringPhone
     * @return 结果
     */
    List<ConstructionSitePlan> selectByPhone(String monitoringPhone);

    /**
     * 查询施工计划（日计划号）
     *
     * @param dayPlanNumber
     * @return 结果
     */
    ConstructionSitePlan selectByDayPlan(int dayPlanNumber);

    /**
     * 查询施工计划（日计划号和联系方式）
     *
     * @param dayPlanNumber,monitoringPhone
     * @return 结果
     */
    ConstructionSitePlan selectByPlanAndPhone(int dayPlanNumber, String monitoringPhone);

    /**
     * 查询施工计划（需要打电话的施工计划）
     *
     * @param
     * @return 结果
     */
    List<ConstructionSitePlan> selectCallInfo();

    /**
     * 添加施工计划
     *
     * @param sitePlan
     * @return 结果
     */
    int insertConstruction(ConstructionSitePlan sitePlan);

    /**
     * 更新施工计划(ID)
     *
     * @param sitePlan
     * @return 结果
     */
    int updateConstructionById(ConstructionSitePlan sitePlan);

    /**
     * 更新施工计划(dayPlanNumber)
     *
     * @param sitePlan
     * @return 结果
     */
    int updateConstructionByDayPlan(ConstructionSitePlan sitePlan);

    /**
     * 更新施工计划(更新拨出状态)
     *
     * @param dayPlanNumber,callStatus
     * @return 结果
     */
    int updatePlanCall(int dayPlanNumber,int callStatus);

    /**
     * 更新施工计划(更新回拨状态)
     *
     * @param dayPlanNumber,callBackStatus
     * @return 结果
     */
    int updatePlanCallBack(int dayPlanNumber,int callBackStatus);

    List<ConstructionSitePlan> getAllUnIncallRecord();

    Integer selectNumByDayPlan(Integer dayPlanNumber, Integer constructionSiteId);

    int deleteConstructionById(Integer constructionSiteId);

    int updateNotCallBackRecord();

    ConstructionSitePlan getPlanByDayPlanNumber(Integer planId);

    List<ConstructionSitePlanVo> searchPlanList(PlanQuery query);
}
